#leetcode题目50：幂函数
#难度：中等
#时间复杂度：O(logn)
#空间复杂度：O(1)
#方法：快速幂

class Solution:
    def myPow(self, x: float, n: int) -> float:
       if n<0:
        x,n=1/x,-n
       ans=1
       while n:
        if n%2==0:
            x,n=x*x,n//2
        else:
            ans,n=ans*x,n-1
       return ans

#测试数据
x=2.00000
n=10
#预期输出：1024.00000
solution=Solution()
print(solution.myPow(x,n))

x=2.10000
n=3
#预期输出：9.26100
solution=Solution()
print(solution.myPow(x,n))

x=2.00000
n=-2
#预期输出：0.25000
solution=Solution()
print(solution.myPow(x,n))
       
